package com.ocean.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ocean.admin.entity.SysUser;
import com.ocean.admin.model.dto.user.SysUserQueryDTO;
import com.ocean.admin.model.dto.user.SysUserSaveDTO;
import com.ocean.admin.model.dto.user.SysUserUpdateDTO;
import com.ocean.admin.model.dto.user.SysUserUpdatePasswordDTO;
import com.ocean.admin.model.vo.router.RouterVo;
import com.ocean.admin.model.vo.user.SysUserInfoVo;
import com.ocean.admin.model.vo.user.SysUserVo;
import com.ocean.admin.extension.security.core.SysUserDetails;

import java.util.List;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author zhang
 * @since 2022-08-16
 */
public interface ISysUserService extends IService<SysUser> {

    /**
     * 认证
     *
     * @param username 用户名
     * @return 用户信息
     */
    SysUserDetails selectUserByUsername(String username);

    /**
     * 获取路由信息
     *
     * @return 路由信息
     */
    List<RouterVo> getRouters();

    /**
     * 新增用户
     *
     * @param saveDTO 用户信息
     * @return 结果
     */
    String saveUser(SysUserSaveDTO saveDTO);

    /**
     * 删除用户
     *
     * @param userIds 用户ID
     * @return 结果
     */
    String removeUser(Long[] userIds);

    /**
     * 修改用户
     *
     * @param updateDTO 用户信息
     * @return 结果
     */
    String updateUser(SysUserUpdateDTO updateDTO);

    /**
     * 分页查询用户
     *
     * @param queryDTO 查询条件
     * @return 结果
     */
    IPage<SysUserVo> pageList(SysUserQueryDTO queryDTO);

    /**
     * 重置密码
     *
     * @param passwordDTO 密码信息
     * @return 结果
     */
    String resetPassword(SysUserUpdatePasswordDTO passwordDTO);

    /**
     * 查询用户详情
     *
     * @param userId 用户ID
     * @return 结果
     */
    SysUserInfoVo queryInfo(Long userId);

    /**
     * 修改用户状态
     *
     * @param userId 用户ID
     * @param status 帐号状态（0正常 1停用）
     * @return 结果
     */
    String updateStatus(Long userId, Integer status);
}
